<?php
/**
 * Перевірка логіна
 */
class Auth_Validate_Login extends Zend_Validate_Abstract
{
    /**
     * Максимальна довжина (при зміні треба змінити і у базі)
     * 
     * @var int $_max
     */
    protected $_max = 30;

    /**
     * Регулярний вираз
     *
     * @var string
     */
    protected $_pattern = '/^[\w][\w\d\._-]+[\w\d]$/';

    /**
     * помилки
     */
    protected $_messageTemplates = array(
        'not_correct' => '[ERROR_LOGIN_NOT_CORRECT]',
        'too_long' => '[ERROR_LOGIN_TOO_LONG]',
        'exists' => '[ERROR_LOGIN_EXISTS]'
    );

    /**
     * @see Zend_Validate_Abstract::isValid()
     * @param string $value
     * @param mixed $context
     * @return bool
     */
    public function isValid($value, $context = null)
    {
        $value = (string) $value;
        $this->_setValue($value);
        if (!@reg_match($this->_pattern, $value))
            $this->_error('not_correct');
        if (iconv_strlen($value) > $this->_max)
            $this->_error('too_long');
        
        $auths = new Auth_Users();
        if ($auths->getByLogin($value))
            $this->_error('exists');
        if (count($this->_messages)) {
            return false;
        } else {
            return true;
        }
    }
}